package com.atguigu.utils;

import org.apache.commons.beanutils.BeanUtils;

import javax.servlet.http.HttpServletRequest;
import java.lang.reflect.InvocationTargetException;
import java.util.Map;

//这个文件是用来吧requset的内容打入得到对象中,进行mysql操作的简便实现方式
public class WebUtils {

    //public static void CopyParamToBean(Object bean, HttpServletRequest req){//这是贯口,把request的参数灌到bean中去,自动的
    public static <T> T CopyParamToBean(T bean, Map map){
        try {
            //BeanUtils.populate(bean,req.getParameterMap());//利用BeanUtils.populate把参数放入user中,从而不用从request中提出参数,在把参数放入user中了
            //BeanUtils.populate 利用的bean对象的set方法
            //引申一下,req.getParameterMap()可以换成任何map. 只要key在bean中有对象的set方法,就能用BeanUtils.populate,往bean类的对象中打入vlaue
            //为了以后都可以用这个类,所以我要把req.getParameterMap()换成Map map,并把引用这个类的地方传值时改成req.getParameterMap()
            BeanUtils.populate(bean,map);
            //System.out.println(bean);
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        }
        return bean;//既然返回值类型是Object,那么如论如何都要有那么一个返回值,不能没有.
    }

    //获取当前日志输出的文件和行号
    public static String getFileName() {
        return Thread.currentThread().getStackTrace()[1].getFileName()+Thread.currentThread().getStackTrace()[1].getLineNumber()+":";
    }

    //把string类型的字符转换成数字型
    public static Integer parseInt(String strInt,int defaultValue) {
        try {
            return Integer.parseInt(strInt);
        }catch (Exception e){
            //e.printStackTrace();
        }
        return defaultValue;
    }
}
